package code12._type;

import org.junit.Test;

public class TestMethod {

	// 静态或非静态的方法都可以使用 方法泛型
	// 表示方法中存在一个未知类型
	public static <T> void f1(T t) {// 参数
		// 在方法内使用
		T a;
	}
	// 表示该方法中 有两个未知的类型，别名分为为 T 、 R
	public static <T, R> T f2() {
		// 也可以用在返回值类型上
		T t;
		R r;
		return null;
	}
	
	// 获取任意类型数组的最后一个元素
	public static <T> T getLast(T[] arr) {
		return arr[arr.length-1];
	}
	@Test
	public void t1() {
		String[] arr1 = {"11","22"};
		// 泛型方法的使用, 和普通方法的使用没有任何区别，即不需要设置泛型对应的具体类型.
		// 编译器会自动识别
		String last = getLast(arr1);
		
		Integer[] arr2 = {12,23,45};
		Integer last2 = getLast(arr2);
	}
	
}
